home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
sourcecode
/
games
/
duel sword doods.amos
/
duel sword doods.amosSourceCode
< prev
next >
Wrap
AMOS Source Code
|
1992-10-23
|
54KB
|
2,039 lines
Rem - Duel Sword Doods -
Rem
Rem started: 01-Mar-93
Rem finished: 09-Mar-93
'
Set Buffer 26
'
FLNG$="DSD-Grafix/"
FLNM$="DSD-Music/"
'
Rem as some machines only have limited CHIP RAM, the
Rem following flag will enable a high-chip game or a
Rem low-chip game. Even some A500 can handle the high
Rem chip game if only the AMOS1.3 is run ALONE! But
Rem just in case you experience glitches and partial
Rem re-occurance of unwanted images on screen, then
Rem set the flag to LOWCHIP, otherwise HIGHCHIP is
Rem best.
'
Rem CHIP = 0 (LOWCHIP, Both player will have same colour!)
Rem CHIP = 123 (HIGHCHIP, Players and enemies will have there own colour!)
'
CHIP=0 : Rem set to 123 if want High Chip Game
'
'
Rem due to various incompatable thingies
Rem you may switch med music on and off
Rem BUT MUST MAKE SURE YOUR AMOS CAN USE IT
'
Rem IMPORTANT NOTICE TO ALL AMOS PROFESSIONAL OWNERS
Rem
Rem At the moment, all command concerning MED have
Rem been removed so the old AMOS may load the prog
Rem source and run normally.
Rem
Rem To get some music running(as the game was meant
Rem to hold, simply set the variable MEDON to 123.
Rem Also, remove the ''''' from the program
Rem subroutine _MEDMAGIC(end of listing!)
Rem
Rem I'm sorry music is not available for the old AMOS
Rem but the 'tracker' clone modules present limitations I find
Rem un-acceptable..
MEDON=0
'
'
Screen Open 0,320,256,16,Lowres
Screen 0 : Cls 0 : Screen Hide 0 : Hide
'
Unpack 7 To 0 : Screen Hide 0
Music 1
Wait 380
Screen Show 0
Wait 300
Music Off
Fade 1
'
LAST=0 : Rem save 85K
If LAST=123
Erase 3 : Erase 7
End If
'
Rem POSITION OF SWORD
Dim SW(30,6) : Rem enable / x / y pos
Dim SS(5,4)
'
Dim PL(2,22),C(15)
Dim NM(7,7),NO(9,7)
'
'
AA=321 : Gosub _MEDMAGIC
'
Gosub _GRABGRAFIX
Gosub _PREPARESWORDARRAY
Gosub _SETTUPSCREEN
Gosub _CONFIGURENUMBER
'
Rem big main things
FLOORY=170 : MUS=1
'
Screen Hide 1 : Screen Hide 0
'
MASTERQUIT=0
While MASTERQUIT<>123
'
LEVEL=20
'
Gosub _TITLEPAGE
Fade 3 : Wait 45
Gosub _CHOOSE
Fade 3 : Wait 45
'
For T=1 To 2
PL(T,21)=0 : Rem no score
Next T
'
Screen 1
'
SIRQUIT=0
While SIRQUIT<>123
'
Rem settup individual fights here
'
CUL1=$A
C(6)=CUL1
If CONTROL=1
CUL2=$D0
C(7)=CUL2
Else
If LEVEL=20 : CUL2=$D00 : End If
If LEVEL=30 : CUL2=$DD0 : End If
If LEVEL=40 : CUL2=$DD : End If
If LEVEL=50 : CUL2=$DAA : End If
If LEVEL=60 : CUL2=$A55 : End If
If LEVEL=70 : CUL2=$72E : End If
If LEVEL=80 : CUL2=$AF2 : End If
If LEVEL=90 : CUL2=$31B : End If
If LEVEL=100 : CUL2=$EEE : End If
C(7)=CUL2
End If
'
Gosub _SETTUPPLAYERS
Gosub _RENEWSCREEN
Gosub _GIVECOLOURS
'
REWARD=0 : GAMECOUNT=1
CL0PBIT=1 : CL0P=0
SPIKE1=0 : SPIKE2=0
'
Colour 6,CUL1 : Colour 7,CUL2
'
MISTERQUIT=0
While MISTERQUIT<>123
'
K$=Inkey$
AA=1 : Gosub _MEDMAGIC
If(K$="q") : SIRQUIT=123 : MISTERQUIT=123 : End If
If(K$="p") or(K$="P")
Colour 0,$A
K$=""
While((K$<>"p") and(K$<>"P")) : K$=Inkey$ : Wend
Colour 0,$0
End If
'
Bob Clear
'
Gosub _SPIKECHECK
Gosub _CYCLECLIPINSTRUCT
'
For CHAR=1 To 2
'
If CHAR=1 : CHARX=2 : Else CHARX=1 : End If
'
Gosub _MODESWITCHER
Gosub _READJOYSTICK
Gosub _REACTIONING
Gosub _NEARINTERUPT
Gosub _COLLISIONS
Gosub _SCANFORWIN
'
Gosub _DOBOBS
Gosub _HITPOINTUPDATE
Next CHAR
'
Rem variable increementors
If GAMECOUNT>0 : GAMECOUNT=GAMECOUNT+1 : End If
'
Bob Draw
Screen Swap : Wait Vbl
'
Wend
'
Wait 50
Fade 3 : Wait 45
'
If REWARD=1
PL(1,21)=PL(1,21)+1
If CONTROL=2
LEVEL=LEVEL+10
End If
End If
If REWARD=2
PL(2,21)=PL(2,21)+1
End If
'
Rem the first to 9, wins
WINNER=0
If PL(1,21)=9
WINNER=1
End If
If PL(2,21)=9
WINNER=2
End If
If WINNER<>0
Gosub _WINNINGSCREEN
Gosub _GRABGRAFIX
SIRQUIT=123
End If
'
Wend
'
Wend
'
End
'
'
'
_ENEMYACTION:
'
RACT=Int(Rnd(100))
If RACT<(LEVEL)
'
DR=0
'
If PL(CHAR,1)>=PL(CHARX,1)
DISTANCE=PL(CHAR,1)-PL(CHARX,1)
Else
DISTANCE=PL(CHARX,1)-PL(CHAR,1)
End If
'
If DISTANCE>100 : DR=4 : End If
'
If LEVEL>=20 and LEVEL<=30
If PL(CHAR,10)>=1
If DISTANCE<100 : DR=22 : End If
If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If
End If
If PL(CHAR,10)=0
If DISTANCE>80 : DR=5 : End If
If DISTANCE<60 : DR=22 : End If
If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If
If DISTANCE<20 : DR=18 : End If
End If
End If
'
If LEVEL>=40 and LEVEL<=50
If PL(CHAR,10)>=1
If DISTANCE<100 : DR=22 : End If
If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If
End If
If PL(CHAR,10)=0
If DISTANCE>80 : DR=5 : End If
If DISTANCE<60 : DR=22 : End If
If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If
If DISTANCE<20 : DR=18 : End If
End If
If PL(CHARX,3)=15 : DR=2 : End If
If PL(CHARX,3)=14 : DR=2 : End If
End If
'
If LEVEL>=60 and LEVEL<=70
If PL(CHAR,10)>=1
If DISTANCE<100 : DR=22 : End If
If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If
End If
If PL(CHAR,10)=0
If DISTANCE>80 : DR=5 : End If
If DISTANCE<60 : DR=22 : End If
If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If
If DISTANCE<20 : DR=18 : End If
End If
If PL(CHARX,3)=15 : DR=2 : End If
If PL(CHARX,3)=14 : DR=2 : End If
End If
'
If LEVEL>=80 and LEVEL<=100
If PL(CHAR,10)>=1
If DISTANCE<100 : DR=22 : End If
If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If
End If
If PL(CHAR,10)=0
If DISTANCE>80 : DR=5 : End If
If DISTANCE<60 : DR=22 : End If
If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If
If DISTANCE<20 : DR=18 : End If
End If
If PL(CHARX,3)=15 or PL(CHARX,19)<>0 : DR=2 : End If
If PL(CHAR,10)<2
SDIS=2000
For T=1 To 4
If SS(T,1)>=PL(CHAR,1)-30
If(SS(T,1)-PL(CHAR,1))<SDIS and SS(T,1)<285 : SGO=T : SDIS=(SS(T,1)-PL(CHAR,1)) : End If
End If
Next T
If SDIS<>2000 and PL(CHAR,1)-30<SS(SGO,1) : DR=8 : End If
If SDIS<>2000 and PL(CHAR,1)<SS(SGO,1)+10 and PL(CHAR,1)>SS(SGO,1)-10 : DR=2 : End If
End If
If PL(CHARX,3)=14 and DISTANCE>70 : DR=2 : End If
If PL(CHARX,3)=14 and DISTANCE<=70 : DR=21 : End If
End If
'
'
If PL(CHAR,6)=8
XDR=DR
If DR=4 : XDR=8 : End If
If DR=5 : XDR=9 : End If
If DR=6 : XDR=10 : End If
If DR=21 : XDR=24 : End If
If DR=22 : XDR=25 : End If
If DR=23 : XDR=26 : End If
DR=XDR
End If
'
End If
'
Return
'
'
'
_SPIKECHECK:
'
If GAMECOUNT=0 and CL0P=0
ENV=ENV+1
If ENV<0 or ENV>5
ENV=0
'
RENV=1+Int(Rnd(99)) : RENVR=1+Int(Rnd(1))
If RENV<50 and((SPIKE1=0 and RENVR=1) or(SPIKE2=0 and RENVR=2)) : CL0P=2 : CL0PR=RENVR : CL0PBIT=1 : End If
If PL(1,3)<>55 and PL(2,3)<>55
If RENV>50 and((SPIKE1=1 and CL0PR=1) or(SPIKE2=1 and CL0PR=2)) : CL0P=202 : CL0PBIT=1 : End If
End If
'
End If
End If
'
Rem parimitor check
If PL(1,1)<-20 : PL(1,1)=-20 : End If
If PL(1,1)>340 : PL(1,1)=340 : End If
If PL(2,1)<-20 : PL(2,1)=-20 : End If
If PL(2,1)>340 : PL(2,1)=340 : End If
'
Return
'
'
_CYCLECLIPINSTRUCT:
'
If GAMECOUNT>10 : GAMECOUNT=0 : CL0P=5 : CL0PR=1 : End If
'
If CL0P<>0 : Gosub _CYCLECLIP : End If
'
Return
'
'
'
_SCANFORWIN:
'
If PL(CHAR,20)<=0 and PL(CHAR,0)<>0 and REWARD=0
If PL(CHAR,2)>=FLOORY
If PL(CHAR,20)>-20
PL(CHAR,0)=0
PL(CHAR,20)=0 : PL(CHAR,3)=52 : PL(CHAR,4)=1
Else
If PL(CHAR,20)<>-50
PL(CHAR,0)=0
PL(CHAR,20)=0 : PL(CHAR,3)=54 : PL(CHAR,4)=1
Else
PL(CHAR,0)=0
Rem wait while opponent victots
End If
End If
Else
PL(CHAR,0)=0
PL(CHAR,20)=0 : PL(CHAR,3)=56 : PL(CHAR,4)=1
End If
End If
'
If REWARD<>0 and PL(REWARD,3)=1 and REWARD=CHAR : PL(REWARD,3)=16 : PL(REWARD,4)=1 : End If
'
If PL(1,20)<=0 and PL(2,20)<=0
MISTERQUIT=123
End If
'
Return
'
'
'
_MODESWITCHER:
'
If(PL(1,3)<10 or PL(1,3)>11) and(PL(2,3)<10 or PL(2,3)>11)
Rem change mode due to player position
If PL(1,1)>=PL(2,1)
M0DE=1 : M0DEX=2 : PL(1,6)=4 : PL(2,6)=8
Else
M0DE=2 : M0DEX=1 : PL(1,6)=8 : PL(2,6)=4
End If
End If
'
Return
'
'
_COLLISIONS:
'
If PL(CHARX,3)>=50
Rem doint do nout
Else
If PL(CHARX,3)=10 or PL(CHARX,3)=11 or PL(CHARX,3)=31 or(PL(CHARX,3)=5 and PL(CHARX,10)>=1)
Gosub _COLLISIONSAIR
Else
Gosub _COLLISIONSGROUND
End If
End If
'
Return
'
_COLLISIONSAIR:
'
Rem high punch/stab detect
If PL(CHAR,10)=0 : RANGE1=45 : Else RANGE1=65 : End If
If PL(CHARX,3)=12 and PL(CHARX,3)=8 : B=123 : Else B=0 : End If
If PL(CHAR,3)=5 and PL(CHAR,4)=3 and A<RANGE1 and B<>123
PL(CHARX,4)=1 : Gosub _HARDHIT
If PL(CHAR,10)<>0 : PL(CHARX,3)=56 : End If
If PL(CHAR,10)=0 : PL(CHARX,3)=56 : End If
End If
'
Rem flying sword
If PL(CHAR,19)>=100 and PL(CHAR,17)<38
If PL(CHARX,3)=12 or PL(CHARX,3)=8 : B=123 : Else B=0 : End If
If(PL(CHAR,15)-PL(CHARX,1)<10) and(PL(CHAR,15)-PL(CHARX,1)>-15) and B<>123
PL(CHARX,3)=56 : PL(CHARX,4)=1 : Gosub _HARDHIT
End If
End If
'
Rem spikes
If PL(CHARX,0)=1 and PL(CHARX,2)>165
If SPIKE1=1 and PL(CHARX,1)<50 and PL(CHARX,6)=8
PL(CHARX,3)=55 : PL(CHARX,4)=1
End If
If SPIKE2=1 and PL(CHARX,1)>280 and PL(CHARX,6)=4
PL(CHARX,3)=55 : PL(CHARX,4)=1
End If
End If
'
Return
'
_COLLISIONSGROUND:
'
Rem collisions based on own 3 num and 4 position and
Rem your 1 pos and enemy 1 pos and enemy 3 num
'
Rem find different(positive)
If PL(CHARX,1)>PL(CHAR,1)
A=PL(CHARX,1)-PL(CHAR,1)
Else
A=PL(CHAR,1)-PL(CHARX,1)
End If
Rem B will be flag indecating successful defence
'
Rem low punch/stab detect
If PL(CHAR,10)=0 : RANGE1=50 : Else RANGE1=80 : End If
If PL(CHARX,3)=13 : B=123 : Else B=0 : End If
If PL(CHAR,3)=4 and PL(CHAR,4)=3 and A<RANGE1 and B<>123
PL(CHARX,3)=50 : PL(CHARX,4)=1 : Gosub _SMALLHIT
End If
'
Rem medium pary detect
RANGE1=60
If PL(CHARX,3)=12 : B=123 : Else B=0 : End If
If PL(CHAR,3)=9 and PL(CHAR,4)=2 and A<RANGE1 and B<>123
PL(CHARX,3)=50
PL(CHARX,4)=1 : Gosub _MEDIUMHIT
End If
'
Rem high punch/stab detect
If PL(CHAR,10)=0 : RANGE1=45 : Else RANGE1=65 : End If
If PL(CHARX,3)=12 and PL(CHARX,3)=8 : B=123 : Else B=0 : End If
If PL(CHAR,3)=5 and PL(CHAR,4)=3 and A<RANGE1 and B<>123
PL(CHARX,4)=1 : Gosub _HARDHIT
If PL(CHAR,10)<>0 : PL(CHARX,3)=52 : End If
If PL(CHAR,10)=0 : PL(CHARX,3)=50 : End If
End If
'
Rem kick/special detect
If PL(CHAR,10)=0
RANGE1=55 : B=0
If PL(CHAR,3)=6 and PL(CHAR,4)=2 and A<RANGE1 and B<>123
PL(CHARX,3)=52 : PL(CHARX,4)=1 : Gosub _SMALLHIT
End If
End If
If PL(CHAR,10)>0
RANGE1=90
If PL(CHARX,3)=12 or PL(CHARX,3)=8 : B=123 : Else B=0 : End If
If PL(CHAR,3)=14 and PL(CHAR,4)=16 and A<RANGE1 and B<>123
PL(CHARX,3)=54 : PL(CHARX,4)=1 : Gosub _LETHALHIT
End If
End If
'
Rem flying sword
If PL(CHAR,19)>=100 and PL(CHAR,17)<38
If PL(CHARX,3)=12 or PL(CHARX,3)=8 : B=123 : Else B=0 : End If
If(PL(CHAR,15)-PL(CHARX,1)<10) and(PL(CHAR,15)-PL(CHARX,1)>-15) and B<>123
PL(CHARX,3)=52 : PL(CHARX,4)=1 : Gosub _HARDHIT
End If
End If
'
Rem spikes
If PL(CHARX,0)=1
If SPIKE1=1 and PL(CHARX,1)<50 and PL(CHARX,6)=8
PL(CHARX,3)=55 : PL(CHARX,4)=1
End If
If SPIKE2=1 and PL(CHARX,1)>280 and PL(CHARX,6)=4
PL(CHARX,3)=55 : PL(CHARX,4)=1
End If
End If
'
'
Rem pickup
If PL(CHAR,10)<2 and PL(CHAR,19)=0
TT=0
For T=1 To 4
If TT=0 and PL(CHAR,3)=8 and SS(T,0)>0 and SS(T,1)-20<PL(CHAR,1) and SS(T,1)+20>PL(CHAR,1)
Bob Off 12+T : Wait Vbl
PL(CHAR,10)=PL(CHAR,10)+1
SS(T,0)=0 : SS(T,1)=0 : SS(T,2)=0 : SS(T,3)=0
TT=1
End If
Next T
End If
'
Return
'
_SMALLHIT:
PL(CHARX,20)=PL(CHARX,20)-5
HPUPDATE=CHARX : HPUP=3
Return
_MEDIUMHIT:
PL(CHARX,20)=PL(CHARX,20)-10
HPUPDATE=CHARX : HPUP=3
Return
_HARDHIT:
PL(CHARX,20)=PL(CHARX,20)-15
HPUPDATE=CHARX : HPUP=3
Return
_LETHALHIT:
PL(CHARX,20)=-100
HPUPDATE=CHARX : HPUP=5
Return
'
'
_REACTIONING:
'
If PL(CHAR,3)=0
Rem end of game or fight has ben signalled
PL(CHAR,10)=-1
PL(CHAR,5)=11 : MISTERQUIT=123
End If
'
If PL(CHAR,3)=1
If DR<>0
'
If CHAR=M0DEX
If DR=18 and PL(CHAR,10)=0 : PL(CHAR,3)=6 : End If
If DR=18 and PL(CHAR,10)>0 : PL(CHAR,3)=14 : End If
If DR=2 : PL(CHAR,3)=8 : End If
If DR=5 : PL(CHAR,3)=10 : End If
If DR=9 : PL(CHAR,3)=11 : End If
If DR=1 : PL(CHAR,3)=31 : End If
If DR=6 and PL(CHAR,10)=2 : PL(CHAR,3)=12 : End If
If DR=10 and PL(CHAR,10)=2 : PL(CHAR,3)=13 : End If
If DR=4 : PL(CHAR,3)=3 : End If
If DR=8 : PL(CHAR,3)=2 : End If
If DR=24 and PL(CHAR,10)>=1 : PL(CHAR,3)=9 : End If
If DR=25 : PL(CHAR,3)=5 : End If
If DR=26 : PL(CHAR,3)=4 : End If
If DR=17 and PL(CHAR,10)=2 : PL(CHAR,3)=15 : End If
End If
If CHAR=M0DE
If DR=18 and PL(CHAR,10)=0 : PL(CHAR,3)=6 : End If
If DR=18 and PL(CHAR,10)>0 : PL(CHAR,3)=14 : End If
If DR=2 : PL(CHAR,3)=8 : End If
If DR=5 : PL(CHAR,3)=10 : End If
If DR=9 : PL(CHAR,3)=11 : End If
If DR=1 : PL(CHAR,3)=31 : End If
If DR=6 and PL(CHAR,10)=2 : PL(CHAR,3)=12 : End If
If DR=10 and PL(CHAR,10)=2 : PL(CHAR,3)=13 : End If
If DR=4 : PL(CHAR,3)=3 : End If
If DR=8 : PL(CHAR,3)=2 : End If
If DR=24 and PL(CHAR,10)>=1 : PL(CHAR,3)=9 : End If
If DR=25 : PL(CHAR,3)=5 : End If
If DR=26 : PL(CHAR,3)=4 : End If
If DR=17 and PL(CHAR,10)=2 : PL(CHAR,3)=15 : End If
End If
'
Else
PL(CHAR,5)=1 : PL(CHAR,4)=1
End If
End If
'
If PL(CHAR,3)=2
If DR=8
If CHAR=M0DEX : DX=5 : End If
If CHAR=M0DE : DX=-5 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
If PL(CHAR,4)=5 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
If PL(CHAR,4)=7 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
PL(CHAR,4)=PL(CHAR,4)+1 : If PL(CHAR,4)>8 : PL(CHAR,4)=1 : End If
Else
PL(CHAR,3)=1 : PL(CHAR,4)=1
End If
End If
'
If PL(CHAR,3)=3
If DR=4
If CHAR=M0DEX : DX=-8 : End If
If CHAR=M0DE : DX=8 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
If PL(CHAR,4)=5 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
If PL(CHAR,4)=7 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If
PL(CHAR,4)=PL(CHAR,4)+1 : If PL(CHAR,4)>8 : PL(CHAR,4)=1 : End If
Else
PL(CHAR,3)=1 : PL(CHAR,4)=1
End If
End If
'
'
Rem low punch
If PL(CHAR,3)=4
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=8 : DX2=15 : DX3=-15 : DX4=-8 : End If
If CHAR=M0DE : DX1=-8 : DX2=-15 : DX3=15 : DX4=8 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=7 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=2 : PL(CHAR,5)=8 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=7 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
If PL(CHAR,4)=4 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX4 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem high punch
If PL(CHAR,3)=5
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=5 : DX2=20 : DX3=-25 : End If
If CHAR=M0DE : DX1=-5 : DX2=-20 : DX3=25 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=12 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=2 : PL(CHAR,5)=13 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>4 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem kick
If PL(CHAR,3)=6
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=10 : DX2=20 : DX3=-30 : End If
If CHAR=M0DE : DX1=-10 : DX2=-20 : DX3=30 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=9 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=2 : PL(CHAR,5)=10 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=4 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem duck
If PL(CHAR,3)=8
If PL(CHAR,4)<>0
If PL(CHAR,4)=1 : PL(CHAR,4)=2 : PL(CHAR,5)=7 : End If
'
If DR<>2 and PL(CHAR,4)=2 : PL(CHAR,4)=3 : End If
'
If PL(CHAR,4)>2 : PL(CHAR,4)=PL(CHAR,4)+1 : End If
If PL(CHAR,4)>5 : PL(CHAR,5)=1 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
End If
End If
'
Rem pary sword
If PL(CHAR,3)=9
If PL(CHAR,4)<>0
'
If CHAR=M0DEX : DX1=-2 : DX2=2 : End If
If CHAR=M0DE : DX1=2 : DX2=-2 : End If
Rem conditional actions of pary
If DR=8 : PL(CHAR,4)=1 : PL(CHAR,5)=22 : PL(CHAR,1)=PL(CHAR,1) : End If
If DR=24 and PL(CHAR,4)=1 : PL(CHAR,4)=2 : PL(CHAR,5)=23 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
'
If DR<>8 and DR<>24 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem block high
If PL(CHAR,3)=12
If PL(CHAR,4)<>0
If PL(CHAR,4)=1 : PL(CHAR,5)=24 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
End If
End If
'
Rem block low
If PL(CHAR,3)=13
If PL(CHAR,4)<>0
If PL(CHAR,4)=1 : PL(CHAR,5)=25 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
End If
End If
'
'
Rem jump up
'
If PL(CHAR,3)=10
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX=-5 : End If
If CHAR=M0DE : DX=5 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=4 : End If
If PL(CHAR,4)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-10 : End If
If PL(CHAR,4)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-8 : End If
If PL(CHAR,4)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-6 : End If
If PL(CHAR,4)=4 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-2 : End If
If PL(CHAR,4)=5 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-1 : End If
If PL(CHAR,4)=6 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-0 : End If
If PL(CHAR,4)=9 : PL(CHAR,5)=5 : End If
If PL(CHAR,4)=7 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+1 : End If
If PL(CHAR,4)=8 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+2 : End If
If PL(CHAR,4)=9 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+6 : End If
If PL(CHAR,4)=10 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+8 : End If
If PL(CHAR,4)=11 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+10 : End If
If PL(CHAR,4)=12 : PL(CHAR,5)=7 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>13 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
If PL(CHAR,3)=11
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX=5 : End If
If CHAR=M0DE : DX=-5 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=4 : End If
If PL(CHAR,4)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-10 : End If
If PL(CHAR,4)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-8 : End If
If PL(CHAR,4)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-6 : End If
If PL(CHAR,4)=4 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-2 : End If
If PL(CHAR,4)=5 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-1 : End If
If PL(CHAR,4)=6 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-0 : End If
If PL(CHAR,4)=9 : PL(CHAR,5)=5 : End If
If PL(CHAR,4)=7 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+1 : End If
If PL(CHAR,4)=8 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+2 : End If
If PL(CHAR,4)=9 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+6 : End If
If PL(CHAR,4)=10 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+8 : End If
If PL(CHAR,4)=11 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+10 : End If
If PL(CHAR,4)=12 : PL(CHAR,5)=7 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>13 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem jump stright up
If PL(CHAR,3)=31
If PL(CHAR,4)<>0
If PL(CHAR,4)=1 : PL(CHAR,5)=4 : End If
If PL(CHAR,4)=1 : PL(CHAR,2)=PL(CHAR,2)-10 : End If
If PL(CHAR,4)=2 : PL(CHAR,2)=PL(CHAR,2)-8 : End If
If PL(CHAR,4)=3 : PL(CHAR,2)=PL(CHAR,2)-6 : End If
If PL(CHAR,4)=4 : PL(CHAR,2)=PL(CHAR,2)-2 : End If
If PL(CHAR,4)=5 : PL(CHAR,2)=PL(CHAR,2)-1 : End If
If PL(CHAR,4)=6 : PL(CHAR,2)=PL(CHAR,2)-0 : End If
If PL(CHAR,4)=9 : PL(CHAR,5)=5 : End If
If PL(CHAR,4)=7 : PL(CHAR,2)=PL(CHAR,2)+1 : End If
If PL(CHAR,4)=8 : PL(CHAR,2)=PL(CHAR,2)+2 : End If
If PL(CHAR,4)=9 : PL(CHAR,2)=PL(CHAR,2)+6 : End If
If PL(CHAR,4)=10 : PL(CHAR,2)=PL(CHAR,2)+8 : End If
If PL(CHAR,4)=11 : PL(CHAR,2)=PL(CHAR,2)+10 : End If
If PL(CHAR,4)=12 : PL(CHAR,5)=7 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>13 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem super slicing head lob
If PL(CHAR,3)=14
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=25 : DX2=-25 : End If
If CHAR=M0DE : DX1=-25 : DX2=25 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=26 : End If
If PL(CHAR,4)=6 : PL(CHAR,5)=27 : End If
If PL(CHAR,4)=8 : PL(CHAR,5)=26 : End If
If PL(CHAR,4)=10 : PL(CHAR,5)=27 : End If
If PL(CHAR,4)=15 : PL(CHAR,5)=28 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=17 : PL(CHAR,5)=26 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>18 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem throw/give sword
If PL(CHAR,3)=15
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=25 : DX2=-25 : End If
If CHAR=M0DE : DX1=-25 : DX2=25 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=27 : End If
If PL(CHAR,4)=2 : PL(CHAR,5)=26 : End If
If PL(CHAR,4)=3
PL(CHAR,5)=28 : PL(CHAR,1)=PL(CHAR,1)+DX1
Gosub _GIVESWORD : Rem in other words, get rid of it
End If
'
PL(CHAR,4)=PL(CHAR,4)+1
If PL(CHAR,4)>4 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX2 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
'
Rem win and put away swords
If PL(CHAR,3)=16
If PL(CHAR,4)<>0
If PL(CHAR,10)>0
If PL(CHAR,4)=1 : PL(CHAR,5)=21 : End If
If PL(CHAR,4)=4 : PL(CHAR,5)=20 : End If
If PL(CHAR,4)=11 : PL(CHAR,5)=19 : End If
Else
If PL(CHAR,4)=1 : PL(CHAR,5)=21 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=19 : End If
If PL(CHAR,4)=6 : PL(CHAR,5)=21 : End If
If PL(CHAR,4)=8 : PL(CHAR,5)=19 : End If
If PL(CHAR,4)=11 : PL(CHAR,5)=21 : End If
If PL(CHAR,4)=13 : PL(CHAR,5)=19 : End If
If PL(CHAR,4)=16 : PL(CHAR,5)=21 : End If
If PL(CHAR,4)=18 : PL(CHAR,5)=19 : End If
End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>19
PL(CHAR,4)=1 : PL(CHAR,3)=0
PL(CHAR,10)=0 : PL(CHAR,18)=0 : PL(CHAR,19)=0
End If
'
End If
End If
'
'
'
'
'
'
Rem reaction actions follow
'
Rem 50 = weakest reaction
If PL(CHAR,3)=50
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=-5 : DX2=-3 : DX3=-1 : End If
If CHAR=M0DE : DX1=5 : DX2=3 : DX3=1 : End If
If PL(CHAR,4)=1 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=2 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem 51 = strong reaction
If PL(CHAR,3)=51
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=-10 : DX2=-5 : DX3=-3 : End If
If CHAR=M0DE : DX1=10 : DX2=5 : DX3=3 : End If
If PL(CHAR,4)=1
PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX1
Rem drop sword(s)
Gosub _TAKEONESWORD
End If
If PL(CHAR,4)=2 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem 52 = knock back reaction
If PL(CHAR,3)=52
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=-10 : DX2=-8 : DX3=-6 : DX4=-3 : DX5=-2 : DX6=-1 : End If
If CHAR=M0DE : DX1=10 : DX2=8 : DX3=6 : DX4=3 : DX5=2 : DX6=1 : End If
If PL(CHAR,4)=1
PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)-10
Gosub _TAKEALLSWORD
End If
If PL(CHAR,4)=2 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=4 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
Rem at this point, may fall on spikes
'
If SPIKE1=1 and PL(CHAR,1)<50 : PL(CHAR,3)=55 : End If
If SPIKE2=1 and PL(CHAR,1)>280 : PL(CHAR,3)=55 : End If
'
If PL(CHAR,4)=5 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX4 : End If
If PL(CHAR,4)=6 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX5 : End If
If PL(CHAR,4)=7 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX6 : End If
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>8
PL(CHAR,4)=1 : PL(CHAR,3)=53
If PL(CHAR,20)=0
PL(CHAR,3)=99 : REWARD=CHARX
End If
End If
'
End If
End If
'
Rem 53 -restm then get up
If PL(CHAR,3)=53
If PL(CHAR,4)<>0
'
If PL(CHAR,4)=1
PL(CHAR,5)=16
Gosub _TAKEALLSWORD
End If
If PL(CHAR,4)=10 : PL(CHAR,5)=7 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
If PL(CHAR,4)>11 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If
'
End If
End If
'
Rem 54 - super death
'
If PL(CHAR,3)=54
If PL(CHAR,4)<>0
'
If CHAR=M0DEX : DX1=-20 : DX2=-25 : DX3=-30 : DX4=-35 : DX5=-40 : DX6=-43 : DX7=-45 : DX8=-5 : End If
If CHAR=M0DE : DX1=20 : DX2=25 : DX3=30 : DX4=35 : DX5=40 : DX6=43 : DX7=45 : DX8=5 : End If
'
If PL(CHAR,4)=1
PL(CHAR,5)=29 : PL(CHAR,7)=PL(CHAR,1) : PL(CHAR,8)=PL(CHAR,2)-50
Gosub _TAKEALLSWORD
End If
If PL(CHAR,4)=2 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX1 : PL(CHAR,8)=PL(CHAR,2)-55 : End If
If PL(CHAR,4)=3 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX2 : PL(CHAR,8)=PL(CHAR,2)-56 : End If
If PL(CHAR,4)=4 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX3 : PL(CHAR,8)=PL(CHAR,2)-54 : End If
If PL(CHAR,4)=5 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX4 : PL(CHAR,8)=PL(CHAR,2)-49 : End If
If PL(CHAR,4)=6 : PL(CHAR,9)=31 : PL(CHAR,7)=PL(CHAR,1)+DX5 : PL(CHAR,8)=PL(CHAR,2)-39 : End If
If PL(CHAR,4)=7 : PL(CHAR,9)=31 : PL(CHAR,7)=PL(CHAR,1)+DX6 : PL(CHAR,8)=PL(CHAR,2)-25 : End If
If PL(CHAR,4)=8 : PL(CHAR,9)=32 : PL(CHAR,7)=PL(CHAR,1)+DX7 : PL(CHAR,8)=PL(CHAR,2)-5 : End If
If PL(CHAR,4)=9 : PL(CHAR,9)=33 : PL(CHAR,8)=PL(CHAR,2) : End If
If PL(CHAR,4)=10 : PL(CHAR,9)=0 : End If
'
If PL(CHAR,4)=22 : PL(CHAR,9)=33 : PL(CHAR,7)=PL(CHAR,1)+DX8 : PL(CHAR,8)=PL(CHAR,2)-50 : End If
If PL(CHAR,4)=24 : PL(CHAR,9)=32 : End If
If PL(CHAR,4)=26 : PL(CHAR,9)=30 : End If
If PL(CHAR,4)=28 : PL(CHAR,9)=0 : PL(CHAR,5)=14 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
If PL(CHAR,4)>30 or(PL(CHAR,4)>20 and PL(CHAR,20)<=0)
PL(CHAR,4)=1 : PL(CHAR,3)=10
If PL(CHAR,20)<=0
PL(CHAR,3)=99 : REWARD=CHARX
End If
End If
'
End If
End If
'
Rem 55 = knock back and spike death, the 999 for when it is pausing
If PL(CHAR,3)=55 and PL(CHAR,4)<999
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=0 : DX2=0 : DX3=0 : DX4=0 : DX5=-2 : DX6=-3 : End If
If CHAR=M0DE : DX1=0 : DX2=0 : DX3=0 : DX4=0 : DX5=2 : DX6=3 : End If
If PL(CHAR,4)=1
PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)-10 : PL(CHAR,0)=0
Gosub _TAKEALLSWORD
End If
If PL(CHAR,4)=2 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=4 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
If PL(CHAR,4)=5 : PL(CHAR,22)=32 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX4 : PL(CHAR,2)=PL(CHAR,2)+3 : End If
If PL(CHAR,4)=6 : PL(CHAR,22)=32 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX5 : PL(CHAR,2)=PL(CHAR,2)+3 : End If
If PL(CHAR,4)=7 : PL(CHAR,22)=32 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX6 : PL(CHAR,2)=PL(CHAR,2)+3 : End If
'
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>20
PL(CHAR,20)=-50
REWARD=CHARX
PL(CHAR,4)=999
End If
'
End If
End If
'
Rem 56 = knock back and fall to ground from being in air
If PL(CHAR,3)=56
If PL(CHAR,4)<>0
If CHAR=M0DEX : DX1=-10 : DX2=-8 : DX3=-6 : DX4=-3 : DX5=-2 : DX6=-1 : End If
If CHAR=M0DE : DX1=10 : DX2=8 : DX3=6 : DX4=3 : DX5=2 : DX6=1 : End If
If PL(CHAR,4)=1
PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)-10
Gosub _TAKEALLSWORD
End If
If PL(CHAR,4)=2 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If
If PL(CHAR,4)=3 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If
If PL(CHAR,4)=4 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If
Rem at this point, may fall on spikes
'
If SPIKE1=1 and PL(CHAR,1)<50 : PL(CHAR,3)=55 : End If
If SPIKE2=1 and PL(CHAR,1)>280 : PL(CHAR,3)=55 : End If
'
If PL(CHAR,4)=5 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX4 : End If
If PL(CHAR,4)=6 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX5 : End If
If PL(CHAR,4)=7 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX6 : End If
'
If PL(CHAR,2)<FLOORY
PL(CHAR,2)=PL(CHAR,2)+4
If PL(CHAR,2)>=FLOORY
PL(CHAR,2)=FLOORY
End If
End If
'
PL(CHAR,4)=PL(CHAR,4)+1
'
If PL(CHAR,4)>8
PL(CHAR,4)=1 : PL(CHAR,3)=53
If PL(CHAR,20)<=0
PL(CHAR,3)=99 : REWARD=CHARX
End If
End If
'
End If
End If
'
'
'
'
Return
'
'
_TAKEALLSWORD:
'
If PL(CHAR,10)>0
PL(CHAR,12)=PL(CHAR,1)+20 : PL(CHAR,13)=PL(CHAR,2)-40
PL(CHAR,14)=34 : PL(CHAR,18)=1
End If
If PL(CHAR,10)=2
PL(CHAR,15)=PL(CHAR,1)-20 : PL(CHAR,16)=PL(CHAR,2)-40
PL(CHAR,17)=34 : PL(CHAR,19)=1
End If
PL(CHAR,10)=0
'
Return
'
_TAKEONESWORD:
'
If PL(CHAR,10)=2
PL(CHAR,10)=1
PL(CHAR,15)=PL(CHAR,1)+20 : PL(CHAR,16)=PL(CHAR,2)-40
PL(CHAR,17)=34 : PL(CHAR,19)=1
End If
'
Return
'
_GIVESWORD:
'
If PL(CHAR,10)=2
PL(CHAR,10)=1
PL(CHAR,15)=PL(CHAR,1)+20 : PL(CHAR,16)=PL(CHAR,2)-40
PL(CHAR,17)=36 : PL(CHAR,19)=100
End If
'
Return
'
_NEARINTERUPT:
'
Rem all ongoing stuff besides chappy
'
For T=0 To 1
If T<>0 : TT=T+2 : Else TT=0 : End If
Rem sword dropping
If PL(CHAR,18+T)>0 and PL(CHAR,18+T)<100
If PL(CHAR,18+T)=1 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)-3 : End If
If PL(CHAR,18+T)=2 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)-1 : End If
If PL(CHAR,18+T)=3 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)+2 : End If
If PL(CHAR,18+T)=4 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)+5 : End If
If PL(CHAR,18+T)=5 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)+10 : End If
If PL(CHAR,18+T)>5 and PL(CHAR,13+TT)<>(FLOORY+((1-T)*3))
PL(CHAR,13+TT)=PL(CHAR,13+TT)+15
If PL(CHAR,13+TT)>(FLOORY+((1-T)*3)) : PL(CHAR,13+TT)=(FLOORY+((1-T)*3)) : End If
End If
If PL(CHAR,18+T)=6 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+4-(T*12) : End If
If PL(CHAR,18+T)=7 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+3-(T*10) : End If
If PL(CHAR,18+T)=8 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+2-(T*6) : End If
If PL(CHAR,18+T)=9 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+1-(T*2) : End If
'
If PL(CHAR,14+TT)<38 : PL(CHAR,14+TT)=PL(CHAR,14+TT)+1 : End If
'
PL(CHAR,18+T)=PL(CHAR,18+T)+1
'
If PL(CHAR,18+T)>10
Gosub _PLACESWORD
End If
'
End If
If PL(CHAR,18+T)>=100 and CHAR=M0DEX
If PL(CHAR,18+T)=101 : PL(CHAR,14+TT)=36 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-5 : End If
If PL(CHAR,18+T)=102 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-3 : End If
If PL(CHAR,18+T)=103 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-1 : End If
If PL(CHAR,18+T)=104 : PL(CHAR,14+TT)=37 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+2 : End If
If PL(CHAR,18+T)=105 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+10 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+5 : End If
If PL(CHAR,18+T)>105 and PL(CHAR,13+TT)<>(FLOORY+((1-T)*3))
PL(CHAR,13+TT)=PL(CHAR,13+TT)+10
If PL(CHAR,13+TT)>(FLOORY+((1-T)*3)) : PL(CHAR,13+TT)=(FLOORY+((1-T)*3)) : End If
End If
If PL(CHAR,18+T)=109 : PL(CHAR,14+TT)=38 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+4 : End If
If PL(CHAR,18+T)=110 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If
If PL(CHAR,18+T)=111 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If
'
PL(CHAR,18+T)=PL(CHAR,18+T)+1
'
If PL(CHAR,18+T)>113
Gosub _PLACESWORD
End If
'
End If
If PL(CHAR,18+T)>=100 and CHAR=M0DE
If PL(CHAR,18+T)=101 : PL(CHAR,14+TT)=36 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-5 : End If
If PL(CHAR,18+T)=102 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-3 : End If
If PL(CHAR,18+T)=103 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-1 : End If
If PL(CHAR,18+T)=104 : PL(CHAR,14+TT)=37 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+2 : End If
If PL(CHAR,18+T)=105 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-10 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+5 : End If
If PL(CHAR,18+T)>105 and PL(CHAR,13+TT)<>(FLOORY+((1-T)*3))
PL(CHAR,13+TT)=PL(CHAR,13+TT)+10
If PL(CHAR,13+TT)>(FLOORY+((1-T)*3)) : PL(CHAR,13+TT)=(FLOORY+((1-T)*3)) : End If
End If
If PL(CHAR,18+T)=109 : PL(CHAR,14+TT)=38 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-4 : End If
If PL(CHAR,18+T)=110 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If
If PL(CHAR,18+T)=111 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If
'
PL(CHAR,18+T)=PL(CHAR,18+T)+1
'
If PL(CHAR,18+T)>113
Gosub _PLACESWORD
End If
'
End If
Next T
'
Return
'
'
_PLACESWORD:
'
PL(CHAR,18+T)=0
S=1
While S<=4 and SS(S,0)<>0
S=S+1
Wend
'
If T=0 and CHAR=M0DEX : TTTTT=4 : End If
If T=1 and CHAR=M0DEX : TTTTT=1 : End If
If T=0 and CHAR=M0DE : TTTTT=9 : End If
If T=1 and CHAR=M0DE : TTTTT=6 : End If
'
SS(S,0)=TTTTT
SS(S,1)=PL(CHAR,12+TT)
SS(S,2)=PL(CHAR,13+TT)
SS(S,3)=PL(CHAR,14+TT)
If PL(CHAR,6)=8
SS(S,4)=1
Else
SS(S,4)=2
End If
PL(CHAR,14+TT)=0 : Rem get rid of defenision
'
Bob Off SS(S,0)
'
Return
'
'
'
_DOBOBS:
'
BT=1+(CHAR-1)*5
If CHAR=1 : DEFEXTRA=0 : End If
If CHIP=123
If CHAR=2 : DEFEXTRA=40 : End If
Else
If CHAR=2 : DEFEXTRA=0 : End If
End If
'
If PL(CHAR,6)=8
'
Bob BT+2,PL(CHAR,1),PL(CHAR,2),PL(CHAR,5)+DEFEXTRA : Rem body
'
If PL(CHAR,9)<>0
Bob BT+1,PL(CHAR,7),PL(CHAR,8),PL(CHAR,9)+DEFEXTRA : Rem head
Else
Bob Off BT+1
End If
'
If PL(CHAR,10)=0
If PL(CHAR,18)=0 : Bob Off BT+3 : End If
If PL(CHAR,19)=0 : Bob Off BT : End If
End If
If PL(CHAR,10)=1
If SW(PL(CHAR,5),0)=1
Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword one
End If
If SW(PL(CHAR,5),0)=2
Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword onereversed
End If
End If
If PL(CHAR,10)=2
If SW(PL(CHAR,5),0)=1
Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword one
Bob BT,PL(CHAR,1)+SW(PL(CHAR,5),4)-25,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,SW(PL(CHAR,5),6)+DEFEXTRA : Rem sword two
End If
If SW(PL(CHAR,5),0)=2
Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword one rev
Bob BT,PL(CHAR,1)+SW(PL(CHAR,5),4)-25,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,Hrev(SW(PL(CHAR,5),6)+DEFEXTRA) : Rem sword tworev
End If
End If
If PL(CHAR,10)<2
If PL(CHAR,18)=0 and PL(CHAR,19)=0
Rem
Else
If PL(CHAR,18)<>0
Bob BT+3,PL(CHAR,12),PL(CHAR,13),PL(CHAR,14)+DEFEXTRA : Rem sword one
End If
If PL(CHAR,19)<>0
Bob BT,PL(CHAR,15),PL(CHAR,16),PL(CHAR,17)+DEFEXTRA : Rem sword two
End If
End If
End If
'
Rem spike bit
If PL(CHAR,22)<>0
Bob 10+CHAR,PL(CHAR,1)+5,PL(CHAR,2)-25,PL(CHAR,22)
End If
'
End If
If PL(CHAR,6)=4
'
Bob BT+2,PL(CHAR,1),PL(CHAR,2),Hrev(PL(CHAR,5)+DEFEXTRA) : Rem body
'
If PL(CHAR,9)<>0
Bob BT+1,PL(CHAR,7),PL(CHAR,8),Hrev(PL(CHAR,9)+DEFEXTRA) : Rem head
Else
Bob Off BT+1
End If
'
If PL(CHAR,10)=0
If PL(CHAR,18)=0 : Bob Off BT+3 : End If
If PL(CHAR,19)=0 : Bob Off BT : End If
End If
If PL(CHAR,10)=1
If SW(PL(CHAR,5),0)=1
Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword one
End If
If SW(PL(CHAR,5),0)=2
Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword onereversed
End If
End If
If PL(CHAR,10)=2
If SW(PL(CHAR,5),0)=1
Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword one
Bob BT,PL(CHAR,1)+(75-SW(PL(CHAR,5),4))-50,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,Hrev(SW(PL(CHAR,5),6)+DEFEXTRA) : Rem sword two
End If
If SW(PL(CHAR,5),0)=2
Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword one rev
Bob BT,PL(CHAR,1)+(75-SW(PL(CHAR,5),4))-50,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,SW(PL(CHAR,5),6)+DEFEXTRA : Rem sword tworev
End If
End If
If PL(CHAR,10)<2
If PL(CHAR,18)=0 and PL(CHAR,19)=0
Rem
Else
If PL(CHAR,18)<>0
Bob BT+3,PL(CHAR,12),PL(CHAR,13),Hrev(PL(CHAR,14)+DEFEXTRA) : Rem sword one
End If
If PL(CHAR,19)<>0
Bob BT,PL(CHAR,15),PL(CHAR,16),Hrev(PL(CHAR,17)+DEFEXTRA) : Rem sword two
End If
End If
End If
'
Rem spike bit
If PL(CHAR,22)<>0
Bob 10+CHAR,PL(CHAR,1)+5,PL(CHAR,2)-25,Hrev(PL(CHAR,22))
End If
'
End If
'
For T=1 To 4
If SS(T,0)>0 and SS(T,4)=1
Bob 12+T,SS(T,1),SS(T,2),SS(T,3)+DEFEXTRA
End If
If SS(T,0)>0 and SS(T,4)<>1
Bob 12+T,SS(T,1),SS(T,2),Hrev(SS(T,3)+DEFEXTRA)
End If
Next T
'
Return
'
'
'
_READJOYSTICK:
'
DR=0 : J0Y=0
'
Rem j0y = 1 me 0 - other -999 enemy
If CHAR=1
J0Y=1
End If
If CHAR=2 and CONTROL=1
J0Y=0
End If
If CHAR=2 and CONTROL=2
J0Y=999
End If
'
Rem player has control inside screen
If CHAR=M0DEX
If PL(CHAR,1)<20
Rem if jump out
If J0Y<=1
If Joy(J0Y)=9 : DR=9 : Else DR=8 : End If
Else
DR=8
End If
If DR=8 and PL(CHAR,1)>14 : DR=9 : End If
If PL(CHARX,1)<30 : PL(CHARX,1)=PL(CHARX,1)+5 : End If
Else
If J0Y<=1 : DR=Joy(J0Y) : Else Gosub _ENEMYACTION : End If
End If
End If
If CHAR=M0DE
If PL(CHAR,1)>300
If J0Y<=1
If Joy(J0Y)=5 : DR=5 : Else DR=4 : End If
Else
DR=4
End If
If DR=4 and PL(CHAR,1)<306 : DR=5 : End If
If PL(CHARX,1)>290 : PL(CHARX,1)=PL(CHARX,1)-5 : End If
Else
If J0Y<=1 : DR=Joy(J0Y) : Else Gosub _ENEMYACTION : End If
End If
End If
'
Rem reverse any character two drs(horixontally only)
'
If CHAR=M0DE
'
XDR=DR
'
If DR=4 : XDR=8 : End If
If DR=5 : XDR=9 : End If
If DR=6 : XDR=10 : End If
If DR=20 : XDR=24 : End If
If DR=21 : XDR=25 : End If
If DR=22 : XDR=26 : End If
'
If DR=8 : XDR=4 : End If
If DR=9 : XDR=5 : End If
If DR=10 : XDR=6 : End If
If DR=24 : XDR=20 : End If
If DR=25 : XDR=21 : End If
If DR=26 : XDR=22 : End If
'
DR=XDR
'
End If
'
Return
'
'
'
'
'
'
'
'
'
_CHOOSE:
'
Load Iff FLNG$+"Battle-prefs.iff",0 : Screen Hide 0
Screen 0
'
Colour 7,$FFF : Colour 6,$0
CONTROL=1
'
Screen Show 0
While Joy(1)<15
'
If CONTROL=1 and Joy(1)=4 : CONTROL=2 : End If
If CONTROL=2 and Joy(1)=8 : CONTROL=1 : End If
'
If CONTROL=1 : Colour 7,$FFF : Colour 6,$0 : End If
If CONTROL=2 : Colour 7,$0 : Colour 6,$FFF : End If
'
Wait 5
'
Wend
'
Return
'
_SETTUPPLAYERS:
'
For T=1 To 2
PL(T,0)=1 : PL(T,2)=170 : PL(T,3)=1
PL(T,4)=1 : PL(T,5)=1
PL(T,7)=0 : PL(T,8)=0 : PL(T,9)=0 : Rem head co-ords
PL(T,20)=50 : Rem hit points
PL(T,22)=0
Next T
'
Rem the dod on left
PL(1,1)=-20 : PL(1,6)=8 : PL(1,10)=2
'
Rem the right
PL(2,1)=340 : PL(2,6)=4 : PL(2,10)=2
'
Rem clear ground swords
For T=1 To 4
SS(T,0)=0
Next T
'
Return
'
'
'
_SETTUPSCREEN:
'
Screen Open 1,320,256,16,Lowres
Load Iff FLNG$+"battle-arena.iff",1 : Screen Hide 1
Colour 6,$A
Screen Display 1,,,320,190
'
Screen 1 : Double Buffer : Autoback OFF : Bob Update Off
Get Palette 1
'
For T=1 To 20
Set Bob T,0,%111111,%11001010
Next T
'
Return
'
_RENEWSCREEN:
'
Gosub _MAKESCORE
'
Rem decorate doors with masking bob so can go in as normal!!!
'
Screen Close 1 : Screen Open 1,320,256,16,Lowres : Flash Off : Curs Off
Load Iff FLNG$+"battle-arena.iff",1 : Screen Hide 1
Screen Display 1,,,320,190
Paste Bob 10,10,80 : Paste Bob 290,10,81
'
Screen 1 : Double Buffer : Autoback OFF : Bob Update Off
'
For T=1 To 20
Set Bob T,0,%111111,%11001010
Next T
'
Bob 17,8,175,39 : Bob 18,313,175,Hrev(39)
'
Fade 1 : Wait 15
Screen Show 1
'
Return
'
'
'
_GRABGRAFIX:
'
Screen Open 1,320,256,16,Lowres : Screen 1 : Screen Hide 1
'
M=0
FLN1$="Battle-Mon.iff"
FLN2$="Battle-Mon2.iff"
Gosub _PARTIALGRABPART
'
If CHIP=123
M=40
FLN1$="Battle-Rak.iff"
FLN2$="Battle-Rak2.iff"
Gosub _PARTIALGRABPART
End If
'
'
Rem need to grab peice of entrance for smooth enyrance
'
Load Iff FLNG$+"battle-arena.iff",1 : Screen Hide 1
'
Get Bob 39,0,70 To 12,175
'
Rem hot spot the lot
'
For T=1 To 39
Hot Spot T,$12
Next T
For T=41 To 78
Hot Spot T,$12
Next T
'
'
Return
'
'
_PARTIALGRABPART:
'
Load Iff FLNG$+FLN1$,1 : Screen Hide 1
'
Rem grab walks jump and push
ST=1+M : SX=48 : SY=68 : Y=0
For X=0 To 5
XX=X*2
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
'
Rem low punch
ST=7+M : SX=48 : SY=68 : X=0 : Y=1
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
ST=8+M : SX=73 : SY=68 : X=2 : Y=1
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
'
Rem kicks and thums up
ST=9+M : SX=48 : SY=68 : Y=1
For X=0 To 0
XX=(X*2)+5
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
ST=9+M : SX=73 : SY=68 : X=7 : Y=1
Get Bob ST+1,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
ST=9+M : SX=48 : SY=68 : Y=1
For X=2 To 2
XX=(X*2)+6
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
'
Rem high swing and hurt
ST=12+M : SX=48 : SY=68 : Y=2
For X=0 To 2
XX=(X*2)
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
'
Rem fall and grounded
ST=15+M : SX=73 : SY=68 : X=6 : Y=2
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
ST=16+M : SX=73 : SY=68 : X=9 : Y=2
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
'
Rem small and large shadow
ST=17+M : SX=48 : SY=18 : X=0 : Y=3
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
ST=18+M : SX=73 : SY=18 : X=2 : Y=3
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
'
'
Rem a new screen of data
'
Load Iff FLNG$+FLN2$,1 : Screen Hide 1
Gosub _TAKECOLOURS
'
Rem draw swords, pary and block high
ST=19+M : SX=48 : SY=68 : Y=0
For X=0 To 5
XX=(X*2)
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
'
Rem block low, first to frames for big death swing
ST=25+M : SX=48 : SY=68 : Y=1
For X=0 To 2
XX=(X*2)
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
'
Rem final death swing anim and no-head frame
ST=28+M : SX=73 : SY=68 : X=6 : Y=1
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
ST=29+M : SX=73 : SY=68 : X=9 : Y=1
Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
'
'
Rem misclanious items, closely related to players
'
Rem four heads (two intact, two ex[losding)
'
Rem block low, first to frames for big death swing
ST=30+M : SX=23 : SY=23 : Y=2
For X=0 To 1
XX=X
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
For X=0 To 1
XX=X
Get Bob ST+X+2,1+(XX*25),1+(Y*70)+25 To 1+(XX*25)+SX,1+(Y*70)+SY+25
Next X
'
Rem 5 sword anims
ST=34+M : SX=48 : SY=48 : Y=2
For X=0 To 4
XX=(X*2)+2
Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
Next X
'
Return
'
'
_PREPARESWORDARRAY:
'
Rem code 0 = 1-normal 2-reversed 0- not there
'
SW(1,0)=1
SW(1,1)=32 : SW(1,2)=47 : SW(1,3)=35
SW(1,4)=44 : SW(1,5)=39 : SW(1,6)=34
'
SW(2,0)=1
SW(2,1)=37 : SW(2,2)=43 : SW(2,3)=34
SW(2,4)=32 : SW(2,5)=43 : SW(2,6)=35
'
SW(3,0)=1
SW(3,1)=47 : SW(3,2)=43 : SW(3,3)=35
SW(3,4)=25 : SW(3,5)=50 : SW(3,6)=34
'
SW(4,0)=1
SW(4,1)=18 : SW(4,2)=54 : SW(4,3)=37
SW(4,4)=38 : SW(4,5)=34 : SW(4,6)=34
'
SW(5,0)=1
SW(5,1)=18 : SW(5,2)=58 : SW(5,3)=37
SW(5,4)=37 : SW(5,5)=62 : SW(5,6)=38
'
Rem 6 not used
'
SW(7,0)=1
SW(7,1)=29 : SW(7,2)=56 : SW(7,3)=36
SW(7,4)=40 : SW(7,5)=45 : SW(7,6)=34
'
SW(8,0)=1
SW(8,1)=72 : SW(8,2)=52 : SW(8,3)=36
SW(8,4)=16 : SW(8,5)=51 : SW(8,6)=35
'
Rem 9 and 10 and 11 not used
'
SW(12,0)=1
SW(12,1)=32 : SW(12,2)=40 : SW(12,3)=36
SW(12,4)=47 : SW(12,5)=68 : SW(12,6)=37
'
SW(13,0)=1
SW(13,1)=66 : SW(13,2)=30 : SW(13,3)=36
SW(13,4)=17 : SW(13,5)=68 : SW(13,6)=37
'
SW(14,0)=1
SW(14,1)=19 : SW(14,2)=62 : SW(14,3)=37
SW(14,4)=64 : SW(14,5)=31 : SW(14,6)=36
'
Rem 15,16,17,18 not used
'
SW(19,0)=1
SW(19,4)=0 : SW(19,5)=0 : SW(19,6)=0
SW(19,1)=0 : SW(19,2)=0 : SW(19,3)=0
'
SW(20,0)=2
SW(20,4)=0 : SW(20,5)=0 : SW(20,6)=0
SW(20,1)=25 : SW(20,2)=22 : SW(20,3)=36
'
SW(21,0)=1
SW(21,1)=46 : SW(21,2)=38 : SW(21,3)=34
SW(21,4)=42 : SW(21,5)=35 : SW(21,6)=34
'
SW(22,0)=1
SW(22,1)=59 : SW(22,2)=36 : SW(22,3)=35
SW(22,4)=36 : SW(22,5)=48 : SW(22,6)=36
'
SW(23,0)=1
SW(23,1)=65 : SW(23,2)=45 : SW(23,3)=36
SW(23,4)=37 : SW(23,5)=49 : SW(23,6)=36
'
SW(24,0)=1
SW(24,1)=42 : SW(24,2)=44 : SW(24,3)=35
SW(24,4)=44 : SW(24,5)=38 : SW(24,6)=34
'
SW(25,0)=1
SW(25,1)=42 : SW(25,2)=69 : SW(25,3)=37
SW(25,4)=39 : SW(25,5)=64 : SW(25,6)=38
'
SW(26,0)=2
SW(26,1)=1 : SW(26,2)=35 : SW(26,3)=36
SW(26,4)=1 : SW(26,5)=35 : SW(26,6)=36
'
SW(27,0)=2
SW(27,1)=-12 : SW(27,2)=34 : SW(27,3)=36
SW(27,4)=-12 : SW(27,5)=34 : SW(27,6)=36
'
SW(28,0)=1
SW(28,1)=62 : SW(28,2)=29 : SW(28,3)=36
SW(28,4)=62 : SW(28,5)=29 : SW(28,6)=36
'
SW(29,0)=1
SW(29,1)=10 : SW(29,2)=72 : SW(29,3)=36
SW(29,4)=76 : SW(29,5)=33 : SW(29,6)=36
'
Return
'
'
'
'
_HITPOINTUPDATE:
'
If HPUP>0
If HPUPDATE=1
If PL(1,20)>=0 : Ink 10 : Bar 43+(PL(1,20)*2),1 To 44+(50*2),15 : End If
Else
If PL(2,20)>=0 : Ink 10 : Bar 179+(PL(2,20)*2),1 To 180+(50*2),15 : End If
End If
HPUP=HPUP-1 : If HPUP=0 : HPUPDATE=0 : End If
End If
'
Return
'
'
'
'
'
_TITLEPAGE:
'
AA=987 : Gosub _MEDMAGIC
'
Screen Hide 1
Screen 0 : Flash Off : Curs Off : Cls 0
Load Iff FLNG$+"battle-title.iff",0 : Screen Hide 0 : C(6)=Colour(6) : C(7)=Colour(7)
Fade 1 : Wait 15
Screen Show 0
Gosub _GIVECOLOURS
'
While Joy(1)<15 and Joy(0)<15
'
K$=Inkey$
AA=1 : Gosub _MEDMAGIC
'
Wend
'
Fade 2 : Wait 30
Screen Hide 0 : Cls 0
'
Return
'
_TAKECOLOURS:
'
For T=0 To 15
C(T)=Colour(T)
Next T
Fade 3
Wait 45
'
Return
'
_GIVECOLOURS:
'
Fade 3,C(0),C(1),C(2),C(3),C(4),C(5),C(6),C(7),C(8),C(9),C(10),C(11),C(12),C(13),C(14),C(15)
Wait 45
'
Return
'
_MAKESCORE:
'
Screen 0
'
If PL(1,21)<=9
Ink 0 : Bar 0,0 To 20,20
Ink 1
For T=0 To 6
If NO(PL(1,21),T)=1
Bar NM(T,0),NM(T,1) To NM(T,2)+2,NM(T,3)+2
End If
Next T
Get Bob 80,1,1 To 20,20
End If
If PL(2,21)<=9
Ink 0 : Bar 0,0 To 20,20
Ink 1
For T=0 To 6
If NO(PL(2,21),T)=1
Bar NM(T,0),NM(T,1) To NM(T,2)+2,NM(T,3)+2
End If
Next T
Get Bob 81,1,1 To 20,20
End If
'
Cls 0
'
Return
'
_CONFIGURENUMBER:
'
NM(0,0)=5 : NM(0,1)=5 : NM(0,2)=15 : NM(0,3)=5
NM(1,0)=5 : NM(1,1)=5 : NM(1,2)=5 : NM(1,3)=10
NM(2,0)=15 : NM(2,1)=5 : NM(2,2)=15 : NM(2,3)=10
NM(3,0)=5 : NM(3,1)=10 : NM(3,2)=15 : NM(3,3)=10
NM(4,0)=5 : NM(4,1)=10 : NM(4,2)=5 : NM(4,3)=15
NM(5,0)=15 : NM(5,1)=10 : NM(5,2)=15 : NM(5,3)=15
NM(6,0)=5 : NM(6,1)=15 : NM(6,2)=15 : NM(6,3)=15
'
'
NO(0,0)=1 : NO(0,1)=1 : NO(0,2)=1
NO(0,3)=0 : NO(0,4)=1 : NO(0,5)=1 : NO(0,6)=1
'
NO(1,0)=0 : NO(1,1)=0 : NO(1,2)=1
NO(1,3)=0 : NO(1,4)=0 : NO(1,5)=1 : NO(1,6)=0
'
NO(2,0)=1 : NO(2,1)=0 : NO(2,2)=1
NO(2,3)=1 : NO(2,4)=1 : NO(2,5)=0 : NO(2,6)=1
'
NO(3,0)=1 : NO(3,1)=0 : NO(3,2)=1
NO(3,3)=1 : NO(3,4)=0 : NO(3,5)=1 : NO(3,6)=1
'
NO(4,0)=0 : NO(4,1)=1 : NO(4,2)=1
NO(4,3)=1 : NO(4,4)=0 : NO(4,5)=1 : NO(4,6)=0
'
NO(5,0)=1 : NO(5,1)=1 : NO(5,2)=0
NO(5,3)=1 : NO(5,4)=0 : NO(5,5)=1 : NO(5,6)=1
'
NO(6,0)=0 : NO(6,1)=1 : NO(6,2)=0
NO(6,3)=1 : NO(6,4)=1 : NO(6,5)=1 : NO(6,6)=1
'
NO(7,0)=1 : NO(7,1)=0 : NO(7,2)=1
NO(7,3)=0 : NO(7,4)=0 : NO(7,5)=1 : NO(7,6)=0
'
NO(8,0)=1 : NO(8,1)=1 : NO(8,2)=1
NO(8,3)=1 : NO(8,4)=1 : NO(8,5)=1 : NO(8,6)=1
'
NO(9,0)=1 : NO(9,1)=1 : NO(9,2)=1
NO(9,3)=1 : NO(9,4)=0 : NO(9,5)=1 : NO(9,6)=0
'
Return
'
'
'
_TAKECLIP:
'
Rem needs cl0p as number 1, 2-4, 5
'
X=1 : Y=194
'
XX=X+((CL0P-1)*50)
SY=53
'
Get Bob 80,XX,Y To XX+SX,Y+SY
'
Return
'
_CYCLECLIP:
'
If CL0P=1
SX=48 : Gosub _TAKECLIP
Paste Bob 182,73,80
CL0P=0
End If
If CL0P>=2 and CL0P<=4
Rem spikes
SX=48 : Gosub _TAKECLIP
If CL0PR=1
Paste Bob 0,124,80
Else
Paste Bob 273,124,Hrev(80)
End If
CL0PBIT=CL0PBIT+1
If CL0PBIT>4
CL0PBIT=0
CL0P=CL0P+1
End If
If CL0P>4
CL0P=0
If CL0PR=1 : SPIKE1=1 : End If
If CL0PR=2 : SPIKE2=1 : End If
End If
End If
If CL0P>=202 and CL0P<=205
ACL=CL0P
If CL0P=202
If CL0PR=1 : SPIKE1=0 : End If
If CL0PR=2 : SPIKE2=0 : End If
End If
If CL0P>=202 and CL0P<=204
Rem spikes
CL0P=6-(CL0P-200)
SX=48 : Gosub _TAKECLIP
End If
If CL0PR=1
Ink 0,0,0 : Bar 0,124 To 47,176 : Wait Vbl
Paste Bob 0,124,80 : Wait Vbl
Else
Ink 0,0,0 : Bar 273,124 To 318,176 : Wait Vbl
Paste Bob 273,124,Hrev(80) : Wait Vbl
End If
CL0P=ACL
CL0PBIT=CL0PBIT+1
If CL0PBIT>4
CL0PBIT=0
CL0P=CL0P+1
End If
If CL0P>205
CL0P=0
End If
End If
If CL0P>=5
If CL0P=5
Rem begin messgae
SX=98 : Gosub _TAKECLIP
Bob 20,110,20,80
End If
CL0P=CL0P+1
If CL0P=25 : Bob Off 20 : CL0P=0 : CL0PBIT=0 : End If
'
End If
'
Return
'
_WINNINGSCREEN:
'
Screen 1 : Screen Hide 1 : Curs Off : Flash Off : Cls 0
Bob Update On : Autoback 2
'
Del Bob 1 To 70
'
Load Iff FLNG$+"battle-ending.iff",1 : Screen Hide 1
'
For T=0 To 3
Get Bob 71+T,1+(T*70),135 To 1+(T*70)+68,243
Next T
'
Screen 1
Ink 0 : Bar 0,200 To 319,250
'
T1$="Upto the ol'Stage"
T2$="Your Prize awaits"
T3$="And your gift is "
T4$=" Immortality "
'
If WINNER=1 : Colour 6,CUL1 : End If
If WINNER=2 : Colour 6,CUL2 : End If
'
Screen 0 : Get Palette 1
Curs Off : Flash Off : Cls 0
Colour 12,$0 : Rem eye shine off
Screen Show 0
'
Screen 0
Pen 1 : Paper 0
RL=201
CNT=0
While CNT<160
'
If CNT=0 : IMG=72 : IMX=300 : End If
If CNT>0 and CNT<70 : IMX=IMX-2 : End If
If CNT=70 : IMG=71 : End If
If CNT>=100 and CNT<140 : Colour 12,Int(Rnd(4000)) : Colour 0,Int(Rnd(7)) : End If
If CNT=140 : Colour 12,$0 : Colour 0,$0 : End If
If CNT=105 : IMG=73 : IMX=IMX+25 : End If
If CNT=140 : IMG=74 : End If
'
If CNT=10 : Locate 10,18 : Print T1$ : End If
If CNT=60 : Locate 10,19 : Print T2$ : End If
If CNT=100 : Locate 10,20 : Print T3$ : End If
If CNT=140 : Locate 10,21 : Print T4$ : End If
'
Rem prepare screen
Screen 1
Bob 1,IMX,26,IMG : Wait Vbl
Screen 0
'
If Mouse Key=1 : Wait 30 : End If
'
Screen Copy 1,1,1,227,132 To 0,45,10 : Wait Vbl
CNT=CNT+1
'
Wend
'
Fade 1 : Wait 15
Screen Hide 0
'
Load Iff FLNG$+"battle-arena.iff",0 : Screen Hide 0 : Screen Display 0,,,320,190
CL0P=1 : Gosub _CYCLECLIP
Fade 1 : Wait 15
Screen Show 0
CXC=C(6)
If WINNER=1 : C(6)=CUL1 : End If
If WINNER=2 : C(6)=CUL2 : End If
Gosub _GIVECOLOURS
Wait 200
Fade 1 : Wait 15
Screen Hide : Screen Hide 0
Screen 0 : Cls 0
Screen 1 : Cls 0
'
C(6)=CXC
'
Return
'
''' This last routine may be changed to include/omit music
'
_MEDMAGIC:
'
''''' If AA<>321
''''' If AA=1 and MEDON=123
''''' If((K$="m") or(K$="M")) and MUS=1 : K$="" : MUS=0 : Med Stop : End If
''''' If((K$="m") or(K$="M")) and MUS=0 : K$="" : MUS=1 : Med Play : End If
''''' End If
''''' If AA=987 and MUS=1 and MEDON=123
''''' Med Play
''''' End If
''''' Else
''''' If MEDON=123
''''' Med Load FLNM$+"Battle-Hunger.music",2
''''' End If
''''' End If
'
Return